package com.lzxuni.modules.pestdetails.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lzxuni.common.utils.StringUtils;
import com.lzxuni.common.utils.poi.ExcelUtil;
import com.lzxuni.modules.common.entity.PageParameter;
import com.lzxuni.modules.pestdetails.entity.Pest;
import com.lzxuni.modules.pestdetails.entity.PestCritical;
import com.lzxuni.modules.pestdetails.mapper.PestCriticalMapper;
import com.lzxuni.modules.pestdetails.mapper.PestMapper;
import com.lzxuni.modules.pestdetails.service.PestService;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * <p>
 * 虫情 服务实现类
 * </p>
 *
 * @author rdf
 * @since 2020-12-03
 */
@Service
public class PestServiceImpl extends ServiceImpl<PestMapper, Pest> implements PestService {

    @Autowired
    private PestCriticalMapper pestCriticalMapper;

    @Override
    public PageInfo<Pest> queryPage(PageParameter pageParameter, Pest pest) {
        if (StringUtils.isNotEmpty(pageParameter.getSidx())) {
            PageHelper.startPage(pageParameter.getPage(), pageParameter.getRows()).setOrderBy(
                    pageParameter.getSidx() + " " + pageParameter.getSord());
        } else {
            PageHelper.startPage(pageParameter.getPage(), pageParameter.getRows());
        }
        PestCritical pestCritical = new PestCritical();
        List<Pest> pestList = baseMapper.queryList(pest);
//        List<PestCritical> pestCriticallList = pestCriticalMapper.queryList(pestCritical);
//        if(pestList != null && pestList.size()>0){
//            for(Pest pestt: pestList){
//                List<Pest> adeat = baseMapper.queryListXQ(pestt);
//                if(adeat != null && adeat.size()>0){
//                    for(Pest adeat1: adeat){
//                        for(PestCritical pestcri: pestCriticallList){
//                            if(StringUtils.isNotEmpty(adeat1.getType()) && StringUtils.isNotEmpty(pestcri.getCtype()) && adeat1.getType().equals(pestcri.getCtype()) ){
//                                if(adeat1.getPestdetailsNumber() != null
//                                        && pestcri.getUpperNumber() != null
//                                        && pestcri.getLowerNumber() != null
//                                        && adeat1.getPestdetailsNumber() <= pestcri.getUpperNumber()
//                                        && adeat1.getPestdetailsNumber() >= pestcri.getLowerNumber() )
//                                {
//                                    pestt.setStatus(pestcri.getCtype());
//                                    break;
//                                }else{
//                                    pestt.setStatus("正常");
//                                }
//
//                            }
//                            }
//                        }
//                }
//            }
//        }
        PageInfo<Pest> pageInfo = new PageInfo<>(pestList);
        return pageInfo;
    }

    @Override
    public Pest queryLand(String keyValue) {
        return baseMapper.queryLand(keyValue);
    }

    @Override
    public Workbook exportExcel(Pest pest) throws IOException {
        PageHelper.orderBy("create_time" + " " + "DESC");
        LinkedHashMap<String, List<List<String>>> dataMap = new LinkedHashMap<>();
        List<List<String>> listData1 = new ArrayList<>();
        Workbook wb = null;
        List<Pest> pesList =baseMapper.queryList(pest);
        List<String> list0 = new ArrayList<>();
        list0.add("所属地块");
        list0.add("日期");
        list0.add("是否编辑");
//        list0.add("状态");


        listData1.add(list0);
        if (pesList != null && pesList.size() > 0) {
            for (int i = 0; i < pesList.size(); i++) {
                Pest pest1 = pesList.get(i);
                List<String> list = new ArrayList<>();

                list.add(pest1.getLandNum());
                list.add(DateFormatUtils.format(pest1.getCreateTime(),"yyyy-MM-dd"));
                if(pest1.getIsedit().toString().equals("1")){
                    list.add("是");
                }else{
                    list.add("否");
                }
//                list.add(pest1.getStatus());

                listData1.add(list);
            }
        }
        dataMap.put("虫情管理", listData1);
        ExcelUtil excelUtil = new ExcelUtil();
        wb = excelUtil.writeExcel(dataMap, "虫情管理");
        return wb;
    }

    //虫情详情列表
    @Override
    public PageInfo<Pest> queryPagexq(PageParameter pageParameter, Pest pest) {
        if (StringUtils.isNotEmpty(pageParameter.getSidx())) {
            PageHelper.startPage(pageParameter.getPage(), pageParameter.getRows()).setOrderBy(
                    pageParameter.getSidx() + " " + pageParameter.getSord());
        } else {
            PageHelper.startPage(pageParameter.getPage(), pageParameter.getRows());
        }
        PestCritical pestCritical = new PestCritical();
        List<Pest> pestList = baseMapper.queryListXQ(pest);
//        List<PestCritical> pestCriticallList = pestCriticalMapper.queryList(pestCritical);
//        if(pestList != null && pestList.size()>0){
//            for(Pest pestt: pestList){
//                        for(PestCritical pestcri: pestCriticallList){
//                            if(StringUtils.isNotEmpty(pestt.getType()) && StringUtils.isNotEmpty(pestcri.getCtype()) && pestt.getType().equals(pestcri.getCtype()) ){
//                                if(pestt.getPestdetailsNumber() != null
//                                        && pestcri.getUpperNumber() != null
//                                        && pestcri.getLowerNumber() != null
//                                        && pestt.getPestdetailsNumber() <= pestcri.getUpperNumber()
//                                        && pestt.getPestdetailsNumber() >= pestcri.getLowerNumber() )
//                                {
//                                    pestt.setStatus(pestcri.getCtype());
//                                    break;
//                                }else{
//                                    pestt.setStatus("正常");
//                                }
//
//                            }
//                        }
//            }
//        }
        PageInfo<Pest> pageInfo = new PageInfo<>(pestList);
        return pageInfo;
    }

    //虫情详情导出
    @Override
    public Workbook exportExcelXq(Pest pest) throws IOException{
//        PageHelper.orderBy("create_time" + " " + "DESC");
        LinkedHashMap<String, List<List<String>>> dataMap = new LinkedHashMap<>();
        List<List<String>> listData1 = new ArrayList<>();
        Workbook wb = null;
        List<Pest> pesList =baseMapper.queryListXQ(pest);
        List<String> list0 = new ArrayList<>();
        list0.add("所属地块");
        list0.add("虫害名称");
        list0.add("数量");
        list0.add("状态");


        listData1.add(list0);
        if (pesList != null && pesList.size() > 0) {
            for (int i = 0; i < pesList.size(); i++) {
                Pest pest1 = pesList.get(i);
                List<String> list = new ArrayList<>();

                list.add(pest1.getLandNum());
//                list.add(DateFormatUtils.format(pest1.getCreateTime(),"yyyy-MM-dd"));
                list.add(pest1.getItemName());
                list.add(pest1.getPestdetailsNumber().toString());
                if(pest1.getStatusFs().equals("1")){
                    list.add("有"+pest1.getItemName()+"灾害");
                }else{
                    list.add("无灾害");
                }


                listData1.add(list);
            }
        }
        dataMap.put("虫情详情信息", listData1);
        ExcelUtil excelUtil = new ExcelUtil();
        wb = excelUtil.writeExcel(dataMap, "虫情详情信息");
        return wb;
    }

    //虫情预警信息
    @Override
    public PageInfo<Pest> queryPageCqyj(PageParameter pageParameter, Pest pest) {
        if (StringUtils.isNotEmpty(pageParameter.getSidx())) {
            PageHelper.startPage(pageParameter.getPage(), pageParameter.getRows()).setOrderBy(
                    pageParameter.getSidx() + " " + pageParameter.getSord());
        } else {
            PageHelper.startPage(pageParameter.getPage(), pageParameter.getRows());
        }
        PestCritical pestCritical = new PestCritical();
        List<Pest> pestList = baseMapper.queryListCqyj(pest);
        //虫情临界值
//        List<PestCritical> pestCriticallList = pestCriticalMapper.queryList(pestCritical);
//        if(pestList != null && pestList.size()>0){
//            Iterator<Pest> iterator = pestList.iterator();
//            while(iterator.hasNext()){
//                Pest pestt=iterator.next();
//                List<Pest> adeat = baseMapper.queryListXQ(pestt);
//                if(adeat != null && adeat.size()>0){
//                    int temp = 0;
//                    for(Pest adeat1: adeat){
//                        for(PestCritical pestcri: pestCriticallList){
//                            if(StringUtils.isNotEmpty(adeat1.getType()) && StringUtils.isNotEmpty(pestcri.getCtype()) && adeat1.getType().equals(pestcri.getCtype()) ){
//                                if(adeat1.getPestdetailsNumber() != null
//                                        && pestcri.getUpperNumber() != null
//                                        && pestcri.getLowerNumber() != null
//                                        && adeat1.getPestdetailsNumber() <= pestcri.getUpperNumber()
//                                        && adeat1.getPestdetailsNumber() >= pestcri.getLowerNumber() )
//                                {
//                                    temp++;
//                                }
//
//                            }
//                        }
//                    }
//                    if(temp ==0){
//                        iterator.remove();
//                    }
//                }
//            }
//        }
        PageInfo<Pest> pageInfo = new PageInfo<>(pestList);
        return pageInfo;
    }

    //虫情预警导出
    @Override
    public Workbook exportExcelCqYj(Pest pest) throws IOException{
        PageHelper.orderBy("create_time" + " " + "DESC");
        LinkedHashMap<String, List<List<String>>> dataMap = new LinkedHashMap<>();
        List<List<String>> listData1 = new ArrayList<>();
        Workbook wb = null;
//        List<Pest> pesList =baseMapper.queryListCqyj(pest);
        PestCritical pestCritical = new PestCritical();
        List<Pest> pestList = baseMapper.queryListCqyj(pest);
//        查询临界值
//        List<PestCritical> pestCriticallList = pestCriticalMapper.queryList(pestCritical);
//        if(pestList != null && pestList.size()>0){
//            Iterator<Pest> iterator = pestList.iterator();
//            while(iterator.hasNext()){
//                Pest pestt=iterator.next();
//                List<Pest> adeat = baseMapper.queryListXQ(pestt);
//                if(adeat != null && adeat.size()>0){
//                    int temp = 0;
//                    for(Pest adeat1: adeat){
//                        for(PestCritical pestcri: pestCriticallList){
//                            if(StringUtils.isNotEmpty(adeat1.getType()) && StringUtils.isNotEmpty(pestcri.getCtype()) && adeat1.getType().equals(pestcri.getCtype()) ){
//                                if(adeat1.getPestdetailsNumber() != null
//                                        && pestcri.getUpperNumber() != null
//                                        && pestcri.getLowerNumber() != null
//                                        && adeat1.getPestdetailsNumber() <= pestcri.getUpperNumber()
//                                        && adeat1.getPestdetailsNumber() >= pestcri.getLowerNumber() )
//                                {
//                                    temp++;
//                                }
//
//                            }
//                        }
//                    }
//                    if(temp ==0){
//                        iterator.remove();
//                    }
//                }
//            }
//        }

        List<String> list0 = new ArrayList<>();
        list0.add("地块名称");
        list0.add("预测时间");
        list0.add("虫害名称");
        list0.add("采集虫数量");



        listData1.add(list0);
        if (pestList != null && pestList.size() > 0) {
            for (int i = 0; i < pestList.size(); i++) {
                Pest pest1 = pestList.get(i);
                List<String> list = new ArrayList<>();

                list.add(pest1.getLandNum());
                list.add(DateFormatUtils.format(pest1.getCreateTime(),"yyyy-MM-dd"));
                list.add(pest1.getItemName());
                list.add(pest1.getPestdetailsNumber().toString());

                listData1.add(list);
            }
        }
        dataMap.put("虫情预警信息", listData1);
        ExcelUtil excelUtil = new ExcelUtil();
        wb = excelUtil.writeExcel(dataMap, "虫情预警信息");
        return wb;
    }

    //查询预警信息(主页面使用)
    @Override
    public List<Pest> queryYuJing() {
        List<Pest> list = baseMapper.queryYuJing();
        return list;
    }

}
